package main

import (
	"fmt"
)

func main() {
	res := tribonacci(25)
	fmt.Println(res)
}

/*
泰波那契序列 Tn 定义如下： 
T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2
给你整数 n，请返回第 n 个泰波那契数 Tn 的值。
示例 1：
输入：n = 4
输出：4
解释：
T_3 = 0 + 1 + 1 = 2
T_4 = 1 + 1 + 2 = 4
来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/n-th-tribonacci-number
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*/

func tribonacci(n int) int {
	var list []int = []int{0,1,1}

	if n == 0 {
		return list[0]
	}

	if n == 1 || n == 2 {
		return list[1]
	}
	total := 0
	for k := 3; k <= n; k++ {
		total = list[0] + list[1] + list[2]
		list[0] = list[1]
		list[1] = list[2]
		list[2] = total
		fmt.Println(total)
	}
	return total
}
